﻿using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;

namespace Firefly.Framework.Input
{
    public interface IHumanInterfaceDevice<S> : IUpdateable
    {
        event EventHandler<StateChangedEventArgs<S>> StateChanged;

        DeviceType DeviceType { get; }
        S CurrentState { get; }
        S PreviousState { get; }
        List<IInputMap> InputMaps { get; }

        void RegisterInputMap(IInputMap map);
    }
}
